from turtle import *
from random import randrange
from freegames import square, vector

food = vector(0, 0)
snake = [vector(10, 0)]
aim = vector(0, 10)

def change(x, y):
	'''Change snake direction.(蛇的方向变化)'''
	aim.x = x
	aim.y = y

def inside(head):
	'''Return True if head inside boundaries.(如果在边界内返回true)'''
	return -200 < head.x < 190 and -200 <head.y <200

def move():
	'''Move snake forward one segment.(将蛇向前移动一段)'''
	head = snake[-1].copy()
	head.move(aim)

	if not inside(head) or head in snake:
		square(head.x, head.y, 9, 'red')
		update()
		return

	snake.append(head)

	if head == food:
		print('Snake:', len(snake))
		food.x = randrange(-15, 15) * 10
		food.y = randrange(-15, 15) * 10
	else:
		snake.pop(0)

	clear()

	for body in snake:
		square(body.x, body.y, 9, 'black')

	square(food.x, food.y, 9, 'green')
	update()
	ontimer(move, 300)

def main():
	setup(420, 420, 370, 0)
	hideturtle()
	tracer(False)
	listen()
	onkey(lambda: change(10, 0), 'Right')
	onkey(lambda: change(-10, 0), 'Left')
	onkey(lambda: change(0, 10), 'Up')
	onkey(lambda: change(0, -10), 'Down')
	move()
	done()

main()